package com.leancloud.circle.manage;

public interface CircleInterface {

    /**
     * 添加或修改圈子文章
     *
     * @param token    token值
     * @param title    标题
     * @param keywords 关键字
     * @param excerpt  摘要
     * @param source   作者
     * @param content  内容
     * @param more     {https://data.yingju8.com/upload/20190326/3b1615415f502a0e48d7cb0ba665cbe8.png,
     *                 https://data.yingju8.com/upload/20190326/3b1615415f502a0e48d7cb0ba665cbe8.png
     *                 图片 多个图片以英文逗号“,”隔开 可选 这里填写带头部的地址}
     * @param category 分类id 分类列表里查看
     * @param circleId 帖子id 传此参数 说明是修改 传-1说明是添加
     * @param topic    是否话题 默认0否（普通帖子）1是（话题）
     * @param back     返回
     */
    void publishCircle(String token, String title, String keywords, String excerpt, String source,
                       String content, String more, int category, int circleId, int topic, CircleBack back);

    /**
     * @param token
     * @param source
     * @param content
     * @param more
     * @param category
     * @param circleId
     * @param back
     */
    void publishCircle(String token, String source, String content, String more, int category, int circleId, CircleBack back);

    /**
     * 删除圈子文章
     *
     * @param circleId 圈子id
     * @param back     返回
     */
    void removeCircle(String circleId, CircleBack back);

    /**
     * 请求圈子列表
     *
     * @param page      页数
     * @param num       当前页数内容条数
     * @param order     排序,默认发布时间
     * @param category  分类
     * @param userId    用户id,传此参数,只查该用户发表的帖子,否则返回所有
     * @param isTopic   是否话题 默认空 0否（普通帖子）1是（话题）
     * @param title     话题名称 默认空 注意 这里不需要传“#”号过来
     * @param applyName 应用名称首拼+月日 不填则返回全部
     * @param back      返回
     */
    void requestCircle(int page, int num, String order, int category, int userId,
                       int isTopic, String title, String applyName, CircleBack back);

    /**
     * 请求圈子文章详情
     *
     * @param id   圈子列表中返回的id
     * @param back 返回
     */
    void requestCircleDetails(int id, CircleBack back);

    /**
     * 添加评论或修改评论
     *
     * @param token     token值
     * @param circleId  圈子id
     * @param content   评论内容
     * @param commentId 评论id 传此参数说明是修改 不传则设置为-1
     * @param back      返回
     */
    void commentCircle(String token, int circleId, String content, int commentId, CircleBack back);

    /**
     * 圈子点赞
     *
     * @param token    token值
     * @param circleId 圈子文章id
     * @param back     返回
     */
    void likeCircle(String token, String circleId, CircleBack back);

    void remorvLikeCircle(String token, String circleId, CircleBack back);

    /**
     * 评论点赞
     *
     * @param token     token值
     * @param commentId 评论id
     * @param back      返回
     */
    void likeComment(String token, int commentId, CircleBack back);

    /**
     * 删除评论
     *
     * @param commentId 评论id
     */
    void removeComment(int commentId, CircleBack back);

    /**
     * 举报圈子文章
     *
     * @param circleId 圈子id
     * @param back     返回
     */
    void reportCircle(int circleId, CircleBack back);

    /**
     * 请求收藏列表
     *
     * @param token token值
     * @param page  页码
     * @param num   当前页码内容条数
     * @param order 排序 默认 收藏时间 create_time
     * @param back  返回
     */
    void requestCollection(String token, int page, String num, String order, CircleBack back);

    /**
     * 添加收藏
     *
     * @param token    token值
     * @param circleId 圈子id
     * @param back     返回
     */
    void addCollection(String token, int circleId, CircleBack back);

    /**
     * 取消收藏
     *
     * @param token    token值
     * @param circleId 圈子id
     * @param back     返回
     */
    void removeCollection(String token, int circleId, CircleBack back);



    /**
     * 查询评论
     *
     * @param page     页数
     * @param num      当前页码内容条数
     * @param order    排序 默认发布时间 create_time
     * @param circleId 圈子文章id 传此参数 只查该文章下的评论 否则返回所有
     * @param userId   用户id 传此参数 只查该用户发表的评论 否则返回所有
     */
    void requestComment(int page, int num, String order, int circleId, int userId, CircleBack back);

    /**
     * 添加或取消关注
     *
     * @param token        token值
     * @param followUserId 被关注的用户id
     * @param back         返回
     */
    void attentionAddOrRemove(String token, String followUserId, CircleBack back);

    /**
     * 请求被关注者的圈子
     *
     * @param token    token值
     * @param page     页数
     * @param num      页数内容
     * @param order    排序 默认发布时间 published_time
     * @param category 分类
     * @param userId   用户id
     * @param topic    是否话题 默认空 0否（普通帖子）1是（话题）
     * @param title    话题名称 默认空 注意 这里不需要传“#”号过来
     * @param back     返回
     */
    void requestCircleByAttention(String token, int page, int num, String order, int category,
                                  int userId, int topic, String title, CircleBack back);

    /**
     * 请求关注我的
     *
     * @param back
     */
    void requestFans(CircleBack back);

    /**
     * 请求我关注的
     *
     * @param back
     */
    void requestConcerned(CircleBack back);
}
